home *** CD-ROM | disk | FTP | other *** search
/ Aminet 2 / Aminet AMIGA CDROM (1994)(Walnut Creek)[Feb 1994][W.O. 44790-1].iso / Aminet / mus / play / tracker_3_19.lzh / tracker / display.c < prev    next >
C/C++ Source or Header  |  1993-11-17  |  8KB  |  337 lines

  1. /* display.c */
  2.  
  3. /* $Id: display.c,v 1.6 1993/11/17 15:31:16 espie Exp espie $
  4.  * $Log: display.c,v $
  5.  * Revision 1.6  1993/11/17  15:31:16  espie
  6.  * *** empty log message ***
  7.  *
  8.  * Revision 1.4  1993/07/18  10:39:44  espie
  9.  * Added last displays.
  10.  *
  11.  * Revision 1.3  1993/07/17  22:23:41  espie
  12.  * Fixed bug with bad loops.
  13.  *
  14.  * Revision 1.2  1993/07/17  12:00:30  espie
  15.  * Added other commands (numerous).
  16.  *
  17.  */
  18.      
  19. #include <stdio.h>
  20.      
  21. #include "defs.h"
  22. #include "extern.h"
  23. #include "song.h"
  24. #include "channel.h"
  25. #include "pref.h"
  26.      
  27. LOCAL char *num[] = {
  28. " 0", " 1", " 2", " 3", " 4", " 5", " 6", " 7", " 8", " 9",
  29. "10", "11", "12", "13", "14", "15", "16", "17", "18", "19",
  30. "20", "21", "22", "23", "24", "25", "26", "27", "28", "29",
  31. "30", "31", "32", "33", "34", "35", "36", "37", "38", "39",
  32. "40", "41", "42", "43", "44", "45", "46", "47", "48", "49",
  33. "50", "51", "52", "53", "54", "55", "56", "57", "58", "59",
  34. "60", "61", "62", "63", "64", "65", "66", "67", "68", "69",
  35. "70", "71", "72", "73", "74", "75", "76", "77", "78", "79",
  36. "80", "81", "82", "83", "84", "85", "86", "87", "88", "89"};
  37.  
  38. LOCAL char instname[] = { ' ', '1', '2', '3', '4', '5', '6', '7', '9',
  39. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O',
  40. 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'};
  41. LOCAL char *cmdname[] = {
  42. "arp", "dwn", "up ", "prt", "vib", "pts", "vbs", "7  ", "8  ", "off", "svl", 
  43. "ff ", "vol", "skp", "ext", "spd"};
  44.  
  45. LOCAL char *id = "$Id: display.c,v 1.6 1993/11/17 15:31:16 espie Exp espie $";
  46.      
  47. LOCAL void (*table[NUMBER_EFFECTS])();
  48.  
  49. BOOL show;
  50.  
  51. LOCAL char *name_note(note)
  52. int note;
  53.     {
  54.     if (note != NO_NOTE)
  55.         return note_name[note];
  56.     else
  57.         return "   ";
  58.     }
  59.  
  60. void disp_default(samp, para, note, ch)
  61. int samp, para, note;
  62. struct channel *ch;
  63.     {
  64.     printf("%c %s        |", instname[samp], name_note(note));
  65.     }
  66.  
  67. void disp_speed(samp, para, note, ch)
  68. int samp, para, note;
  69. struct channel *ch;
  70.     {
  71.     if (para < 32)
  72.         printf("%c %s SPD  %2d|", instname[samp], name_note(note), para);
  73.     else
  74.         printf("%c %s spd%%%3d|", instname[samp], name_note(note), 
  75.             para * 100/NORMAL_FINESPEED);
  76.     }
  77.  
  78. void disp_nothing(samp, para, note, ch)
  79. int samp, para, note;
  80. struct channel *ch;
  81.     {
  82.         printf("             |");
  83.     }
  84.  
  85. void disp_portamento(samp, para, note, ch)
  86. int samp, para, note;
  87. struct channel *ch;
  88.     {
  89.     if (para)
  90.         printf("%c -->%s(%3d)|", instname[samp], name_note(note),
  91.             para);
  92.     else
  93.         printf("%c -->%s     |", instname[samp], name_note(note));
  94.     }
  95.  
  96. void disp_portaslide(samp, para, note, ch)
  97. int samp, para, note;
  98. struct channel *ch;
  99.     {
  100.     if (LOW(para))
  101.         printf("%c -->%s  -%2d|", instname[samp], name_note(note), LOW(para));
  102.     else
  103.         printf("%c -->%s  +%2d|", instname[samp], name_note(note), HI(para));
  104.     }
  105.  
  106. void disp_upslide(samp, para, note, ch)
  107. int samp, para, note;
  108. struct channel *ch;
  109.     {
  110.     if (para)
  111.         printf("%c %s   -%3d |", instname[samp], name_note(note), para);
  112.     else
  113.         printf("%c %s   -    |", instname[samp], name_note(note));
  114.     }
  115.  
  116. void disp_downslide(samp, para, note, ch)
  117. int samp, para, note;
  118. struct channel *ch;
  119.     {
  120.     if (para)
  121.         printf("%c %s   +%3d |", instname[samp], name_note(note), para);
  122.     else
  123.         printf("%c %s   +    |", instname[samp], name_note(note));
  124.     }
  125.  
  126. void disp_vibrato(samp, para, note, ch)
  127. int samp, para, note;
  128. struct channel *ch;
  129.     {
  130.     if (para)
  131.         printf("%c %s vb%2d/%2d|", instname[samp], name_note(note),
  132.             LOW(para), HI(para));
  133.     else
  134.         printf("%c %s vb     |", instname[samp], name_note(note));
  135.     }
  136.  
  137. void disp_vibratoslide(samp, para, note, ch)
  138. int samp, para, note;
  139. struct channel *ch;
  140.     {
  141.     if (LOW(para))
  142.         printf("%c %s vibs-%2d|", instname[samp], name_note(note),
  143.             LOW(para));
  144.     else
  145.         printf("%c %s vibs+%2d|", instname[samp], name_note(note),
  146.             HI(para));
  147.     }
  148.  
  149. void disp_slidevol(samp, para, note, ch)
  150. int samp, para, note;
  151. struct channel *ch;
  152.     {
  153.     if (LOW(para))
  154.         printf("%c %s vol -%2d|", instname[samp], name_note(note),
  155.             LOW(para));
  156.     else
  157.         if (HI(para))
  158.             printf("%c %s vol +%2d|", instname[samp], name_note(note),
  159.                 HI(para));
  160.         else
  161.             printf("%c %s        |", instname[samp], name_note(note));
  162.     }
  163.  
  164. void disp_volume(samp, para, note, ch)
  165. int samp, para, note;
  166. struct channel *ch;
  167.     {
  168.     if (para)
  169.         printf("%c %s vol %3d|", instname[samp], name_note(note),
  170.             para);
  171.     else
  172.         printf("%c %s silent |", instname[samp], name_note(note));
  173.     }
  174.  
  175. void disp_arpeggio(samp, para, note, ch)
  176. int samp, para, note;
  177. struct channel *ch;
  178.     {
  179.     if (note != NO_NOTE)
  180.         printf("%c %s %s %s|", instname[samp], note_name[note], 
  181.             note_name[note + LOW(para)], note_name[note + HI(para)]);
  182.     else
  183.         if (ch->note == NO_NOTE)
  184.             printf("Arpeggio error  |");
  185.         else
  186.             printf("%c     %s %s|", instname[samp], 
  187.             note_name[ch->note + LOW(para)], note_name[ch->note + HI(para)]);
  188.     }
  189.  
  190. void disp_retrig(samp, para, note, ch)
  191. int samp, para, note;
  192. struct channel *ch;
  193.     {
  194.     printf("%c %s rtg%3d |", instname[samp], name_note(note), para);
  195.     }
  196.  
  197. void disp_note_cut(samp, para, note, ch)
  198. int samp, para, note;
  199. struct channel *ch;
  200.     {
  201.     printf("%c %s cut%3d |", instname[samp], name_note(note), para);
  202.     }
  203.  
  204. void disp_late_start(samp, para, note, ch)
  205. int samp, para, note;
  206. struct channel *ch;
  207.     {
  208.     printf("%c %s lte%3d |", instname[samp], name_note(note), para);
  209.     }
  210.  
  211. void disp_offset(samp, para, note, ch)
  212. int samp, para, note;
  213. struct channel *ch;
  214.     {
  215.     printf("%c %s off%3d%%|", instname[samp], name_note(note), 
  216.         para * 25600/ ch->samp->length);
  217.     }
  218.  
  219. void disp_smooth_up(samp, para, note, ch)
  220. int samp, para, note;
  221. struct channel *ch;
  222.     {
  223.     printf("%c %s sth-%3d|", instname[samp], name_note(note),
  224.         para);
  225.     }
  226.  
  227. void disp_smooth_down(samp, para, note, ch)
  228. int samp, para, note;
  229. struct channel *ch;
  230.     {
  231.     printf("%c %s sth+%3d|", instname[samp], name_note(note),
  232.         para);
  233.     }
  234. void disp_smooth_upvolume(samp, para, note, ch)
  235. int samp, para, note;
  236. struct channel *ch;
  237.     {
  238.     printf("%c %s   ++%3d|", instname[samp], name_note(note),
  239.         para);
  240.     }
  241. void disp_smooth_downvolume(samp, para, note, ch)
  242. int samp, para, note;
  243. struct channel *ch;
  244.     {
  245.     printf("%c %s   --%3d|", instname[samp], name_note(note),
  246.         para);
  247.     }
  248.  
  249. void disp_change_finetune(samp, para, note, ch)
  250. int samp, para, note;
  251. struct channel *ch;
  252.     {
  253.     printf("%c %s fine %2d|", instname[samp], name_note(note),
  254.         para);
  255.     }
  256.  
  257. void disp_skip(samp, para, note, ch)
  258. int samp, para, note;
  259. struct channel *ch;
  260.     {
  261.     if (para)
  262.         printf("%c %s skp %3d|", instname[samp], name_note(note), para);
  263.     else
  264.         printf("%c %s  next  |", instname[samp], name_note(note));
  265.     }
  266.  
  267. void disp_fastskip(samp, para, note, ch)
  268. int samp, para, note;
  269. struct channel *ch;
  270.     {
  271.     printf("%c %s ff  %3d|", instname[samp], name_note(note), para);
  272.     }
  273.  
  274. void disp_loop(samp, para, note, ch)
  275. int samp, para, note;
  276. struct channel *ch;
  277.     {
  278.     if (para == 0)
  279.         printf("%c %s SETLOOP|", instname[samp], name_note(note));
  280.     else
  281.         printf("%c %s LOOP%3d|", instname[samp], name_note(note), para);
  282.     }
  283.  
  284. void disp_delay_pattern(samp, para, note, ch)
  285. int samp, para, note;
  286. struct channel *ch;
  287.     {
  288.     printf("%c %s DLAY%3d|", instname[samp], name_note(note), para);
  289.     }
  290.  
  291. #define disp_nothing disp_default
  292.  
  293. void init_display()
  294.     {
  295.     int i;
  296.  
  297.     for (i = 0; i < NUMBER_EFFECTS; i++)
  298.         table[i] = disp_nothing;
  299.     table[EFF_ARPEGGIO] = disp_arpeggio;
  300.     table[EFF_SPEED] = disp_speed;
  301.     table[EFF_SKIP] = disp_skip;
  302.     table[EFF_FF] = disp_fastskip;
  303.     table[EFF_VOLUME] = disp_volume;
  304.     table[EFF_VOLSLIDE] = disp_slidevol;
  305.     table[EFF_OFFSET] = disp_offset;
  306.     table[EFF_PORTA] = disp_portamento;
  307.     table[EFF_PORTASLIDE] = disp_portaslide;
  308.     table[EFF_UP] = disp_upslide;
  309.     table[EFF_DOWN] = disp_downslide;
  310.     table[EFF_VIBRATO] = disp_vibrato;
  311.     table[EFF_VIBSLIDE] = disp_vibratoslide;
  312.     table[EFF_SMOOTH_UP] = disp_smooth_up;
  313.     table[EFF_SMOOTH_DOWN] = disp_smooth_down;
  314.     table[EFF_CHG_FTUNE] = disp_change_finetune;
  315.     table[EFF_LOOP] = disp_loop;
  316.     table[EFF_RETRIG] = disp_retrig;
  317.     table[EFF_S_UPVOL] = disp_smooth_upvolume;
  318.     table[EFF_S_DOWNVOL] = disp_smooth_downvolume;
  319.     table[EFF_NOTECUT] = disp_note_cut;
  320.     table[EFF_LATESTART] = disp_late_start;
  321.     table[EFF_DELAY] = disp_delay_pattern;
  322.     }
  323.  
  324. void dump_event(ch, e, imask)
  325. struct channel *ch;
  326. struct event *e;
  327. unsigned long imask;
  328.     {
  329.     int samp;
  330.     int cmd;
  331.  
  332.     (*table[e->effect])(e->sample_number, e->parameters, e->note, ch);
  333.     
  334.     fflush(stdout);
  335.     }
  336.  
  337.